\newpage
\chapter{关键技术及研究现状}

NS方程是流体力学中对于流体的数学描述，该方程式通过牛顿第二定律推导出来
的\cite{liudaozhi}。NS方程包含两部分：
\begin{eqnarray}
\nabla \cdot u &=&0 \\
u_t&=&-(u\cdot\nabla)u+\nabla\cdot(v\nabla u)-\nabla p + f
\end{eqnarray}
这两个等式描述了不可压缩流体的质量与动量守恒条件。其中的矢量$u_t$是流体
速度对于时间的导数。标量$p$表示压力，$v$是运动粘性系数，$f$表示单位质点
所承受的体积力。

\section{工程应用}
在实时渲染引擎中的Unreal Engine和CryEngine两大图形引擎基本代表了当前
应用领域的最高技术水平。在使用这两款引擎制作的游戏、仿真中有大量项目使
用了火焰、流体的仿真。对于海洋、湖泊这类流体两种引擎都提供了专门的仿真
算法，但是对于火焰的模拟仍然是通过对粒子系统添加大量的参数，加上美术人
员的手工调整来实现的，本质上仍然是传统的例子系统。在实际应用中通过大量
的优化和细节处理，仍然能够实现不错的视觉效果和很高的运行效率。

\begin{figure}[!ht]
  \centering
  \subfigure[CryEngine Fire]{
    \label{fig:game-app-ce1}
    \includegraphics[width=0.4\textwidth]{CryEngineFire1}
  }\qquad
  \subfigure[CryEngine Smoke]{
    \label{fig:game-app-ce2}
    \includegraphics[width=0.4\textwidth]{CryEngineSmoke1}
  }\\
  \subfigure[UnrealEngine Fire1]{
    \label{fig:game-app-ue1}
    \includegraphics[width=0.4\textwidth]{UnrealFire1}
  }\qquad
  \subfigure[UnrealEngine Fire2]{
    \label{fig:game-app-ue2}
    \includegraphics[width=0.4\textwidth]{UnrealFire2}
}\\
\caption{游戏中火焰、烟雾的应用}
\label{fig:game-app}
\end{figure}

图\ref{fig:game-app-ue1}\ref{fig:game-app-ue2}是使用Unreal Development
Kit (UDK)\footnote{Epic公司提供的Unreal Engine3的免费版本}制作的火焰和
烟雾效果。在没有做任何额外处理的情况下默认会使用最传统的简单粒子系统来
表现火焰和烟雾。为了实现一个视觉效果比较好的火焰、烟雾，会高度依赖于美
术人员的人工调整。
图\ref{fig:game-app-ce1}\ref{fig:game-app-ce2}是CryEngine(CE)中的烟雾和
火焰效果，其中的火焰粒子使用了多层粒子来分别表现火焰、火焰产生的烟雾、
火星等细节。此外在CryEngine的post-process中还有额外的特效来渲染火焰周围
空气密度变化产生的扰动效果，以及火焰的自发光、高光、HDR等特效来提高最终
的视觉效果。
